home *** CD-ROM | disk | FTP | other *** search
/ Risc World 5 / Risc World 5.iso / SOFTWARE / Issue5 / PD / DIRSYNC / LegalStuff / ccres / c / _Icon < prev    next >
Text File  |  2004-03-20  |  9KB  |  198 lines

  1. /* _Icon.c
  2.    $Id: _Icon.c,v 1.4 2004/03/20 23:36:08 joty Exp $
  3.  
  4.    Copyright (c) 2003-2004 Dave Appleby / John Tytgat
  5.  
  6.    This file is part of CCres.
  7.  
  8.    CCres is free software; you can redistribute it and/or modify
  9.    it under the terms of the GNU General Public License as published by
  10.    the Free Software Foundation; either version 2 of the License, or
  11.    (at your option) any later version.
  12.  
  13.    CCres is distributed in the hope that it will be useful,
  14.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.    GNU General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU General Public License
  19.    along with CCres; if not, write to the Free Software
  20.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  21.  */
  22. #include "ccres.h"
  23.  
  24. #include <OSLib/button.h>
  25.  
  26.  
  27. // Res file button gadget
  28.  
  29. static FLAGS ButtonFlags[] = {
  30.   {button_TASK_SPRITE_AREA , "button_TASK_SPRITE_AREA" },
  31.   {button_ALLOW_MENU_CLICKS, "button_ALLOW_MENU_CLICKS"},
  32.   {gadget_FADED            , "gadget_FADED"            },
  33.   {gadget_AT_BACK          , "gadget_AT_BACK"          }
  34. };
  35.  
  36.  
  37. static OBJECTLIST ButtonObjectList[] = {
  38.   {iol_FLAGS,  "flags:",        offsetof(button_object, flags),        ButtonFlags,         ELEMENTS(ButtonFlags)                    },
  39.   {iol_IFLAGS, "button_flags:", offsetof(button_object, button_flags), NULL,                0                                        },
  40.   {iol_ESG,    "button_esg:",   offsetof(button_object, button_flags), NULL,                0                                        },
  41.   {iol_BCOLS,  "button_fg:",    offsetof(button_object, button_flags), "button_bg:",        offsetof(button_object, button_flags)    },
  42.   {iol_MSG,    "value:",        offsetof(button_object, value),        "value_limit:",      offsetof(button_object, value_limit)     },
  43.   {iol_STRING, "validation:",   offsetof(button_object, validation),   "validation_limit:", offsetof(button_object, validation_limit)}
  44.   };
  45.  
  46.         int _button(PDATA data, PSTR pszIn, int nOffset, gadget_object_base * gadget)
  47. //      =============================================================================
  48. {
  49. put_objects(data, pszIn, nOffset, (PSTR) gadget, ButtonObjectList, ELEMENTS(ButtonObjectList));
  50.  
  51. return sizeof(button_object);
  52. }
  53.  
  54.  
  55.         void button(FILE * hf, gadget_object_base * gadget, PSTR pszStringTable, PSTR pszMessageTable)
  56. //      ==============================================================================================
  57. {
  58. get_objects(hf, pszStringTable, pszMessageTable, (PSTR) gadget, ButtonObjectList, ELEMENTS(ButtonObjectList), 2);
  59. }
  60.  
  61.  
  62. // Template file icon
  63.  
  64.  
  65. static OBJECTLIST IconObjectList[] = {
  66.   {iol_BOX,    "extent:",      offsetof(wimp_icon, extent), NULL,          0                         },
  67.   {iol_IFLAGS, "icon_flags:",  offsetof(wimp_icon, flags),  NULL,          0                         },
  68.   {iol_ESG,    "icon_esg:",    offsetof(wimp_icon, flags),  NULL,          0                         }
  69.   };
  70.  
  71. static OBJECTLIST IconColorsObjectList[] = {
  72.   {iol_BCOLS,  "icon_fg:",     offsetof(wimp_icon, flags),  "icon_bg:",    offsetof(wimp_icon, flags)}
  73.   };
  74.  
  75. static OBJECTLIST IconFontHandleObjectList[] = {
  76.   {iol_BYTE,  "font_handle:", offsetof(wimp_icon, flags) + (wimp_ICON_FONT_HANDLE_SHIFT / 8),  "icon_bg:",    offsetof(wimp_icon, flags)}
  77.   };
  78.  
  79. static OBJECTLIST IconTextObjectList[] = {
  80.   {iol_PSTR, "text_only:", offsetof(wimp_icon_data, text), NULL, sizeof(wimp_icon_data)}
  81.   };
  82.  
  83. static OBJECTLIST IconSpriteObjectList[] = {
  84.   {iol_PSTR, "sprite_only:", offsetof(wimp_icon_data, sprite), NULL, sizeof(wimp_icon_data)}
  85.   };
  86.  
  87. static OBJECTLIST IconTextAndSpriteObjectList[] = {
  88.   {iol_PSTR, "text_and_sprite:", offsetof(wimp_icon_data, text_and_sprite), NULL, sizeof(wimp_icon_data)}
  89.   };
  90.  
  91. static OBJECTLIST IconIndirectTextObjectList[] = {
  92.   {iol_TSTRING, "text.text:",       offsetof(wimp_icon_data, indirected_text.text),       NULL, 0},
  93.   {iol_TSTRING, "text.validation:", offsetof(wimp_icon_data, indirected_text.validation), NULL, 0},
  94.   {iol_BITS,    "text.size:",       offsetof(wimp_icon_data, indirected_text.size),       NULL, 0}
  95.   };
  96.  
  97. static OBJECTLIST IconIndirectSpriteObjectList[] = {
  98.   {iol_TSTRING, "sprite.id:",   offsetof(wimp_icon_data, indirected_sprite.id),   NULL, 0},
  99.   {iol_BITS,    "sprite.area:", offsetof(wimp_icon_data, indirected_sprite.area), NULL, 0},
  100.   {iol_BITS,    "sprite.size:", offsetof(wimp_icon_data, indirected_sprite.size), NULL, 0}
  101.   };
  102.  
  103. static OBJECTLIST IconIndirectTextAndSpriteObjectList[] = {
  104.   {iol_TSTRING, "text_and_sprite.text",        offsetof(wimp_icon_data, indirected_text_and_sprite.text),       NULL, 0},
  105.   {iol_TSTRING, "text_and_sprite.validation:", offsetof(wimp_icon_data, indirected_text_and_sprite.validation), NULL, 0},
  106.   {iol_BITS,    "text_and_sprite.size:",       offsetof(wimp_icon_data, indirected_text_and_sprite.size),       NULL, 0}
  107.   };
  108.  
  109.  
  110.         void put_icon_data(PDATA data, PSTR pszIn, int nOffset, wimp_icon_data * icon_data, bits flags)
  111. //      ===============================================================================================
  112. {
  113. switch (flags & (wimp_ICON_INDIRECTED | wimp_ICON_TEXT | wimp_ICON_SPRITE))
  114.   {
  115.   case 0:
  116.   case wimp_ICON_INDIRECTED:
  117.     break;
  118.  
  119.   case wimp_ICON_TEXT:
  120.     put_objects(data, pszIn, nOffset, (PSTR) icon_data, IconTextObjectList, ELEMENTS(IconTextObjectList));
  121.     break;
  122.   case wimp_ICON_SPRITE:
  123.     put_objects(data, pszIn, nOffset, (PSTR) icon_data, IconSpriteObjectList, ELEMENTS(IconSpriteObjectList));
  124.     break;
  125.   case (wimp_ICON_TEXT | wimp_ICON_SPRITE):
  126.     put_objects(data, pszIn, nOffset, (PSTR) icon_data, IconTextAndSpriteObjectList, ELEMENTS(IconTextAndSpriteObjectList));
  127.     break;
  128.  
  129.   case (wimp_ICON_INDIRECTED | wimp_ICON_TEXT):
  130.     put_objects(data, pszIn, nOffset, (PSTR) icon_data, IconIndirectTextObjectList, ELEMENTS(IconIndirectTextObjectList));
  131.     break;
  132.   case (wimp_ICON_INDIRECTED | wimp_ICON_SPRITE):
  133.     put_objects(data, pszIn, nOffset, (PSTR) icon_data, IconIndirectSpriteObjectList, ELEMENTS(IconIndirectSpriteObjectList));
  134.     break;
  135.   case (wimp_ICON_INDIRECTED | wimp_ICON_TEXT | wimp_ICON_SPRITE):
  136.     put_objects(data, pszIn, nOffset, (PSTR) icon_data, IconIndirectTextAndSpriteObjectList, ELEMENTS(IconIndirectTextAndSpriteObjectList));
  137.     break;
  138.   }
  139. }
  140.  
  141.  
  142.         void get_icon_data(FILE * hf, PSTR pszStringTable, wimp_icon_data * icon_data, bits flags, int nIndent)
  143. //      =======================================================================================================
  144. {
  145. switch (flags & (wimp_ICON_INDIRECTED | wimp_ICON_TEXT | wimp_ICON_SPRITE))
  146.   {
  147.   case 0:
  148.   case wimp_ICON_INDIRECTED:
  149.     break;
  150.  
  151.   case wimp_ICON_TEXT:
  152.     get_objects(hf, pszStringTable, NULL, (PSTR) icon_data, IconTextObjectList, ELEMENTS(IconTextObjectList), nIndent);
  153.     break;
  154.   case wimp_ICON_SPRITE:
  155.     get_objects(hf, pszStringTable, NULL, (PSTR) icon_data, IconSpriteObjectList, ELEMENTS(IconSpriteObjectList), nIndent);
  156.     break;
  157.   case (wimp_ICON_TEXT | wimp_ICON_SPRITE):
  158.     get_objects(hf, pszStringTable, NULL, (PSTR) icon_data, IconTextAndSpriteObjectList, ELEMENTS(IconTextAndSpriteObjectList), nIndent);
  159.     break;
  160.  
  161.   case (wimp_ICON_INDIRECTED | wimp_ICON_TEXT):
  162.     get_objects(hf, pszStringTable, NULL, (PSTR) icon_data, IconIndirectTextObjectList, ELEMENTS(IconIndirectTextObjectList), nIndent);
  163.     break;
  164.   case (wimp_ICON_INDIRECTED | wimp_ICON_SPRITE):
  165.     get_objects(hf, pszStringTable, NULL, (PSTR) icon_data, IconIndirectSpriteObjectList, ELEMENTS(IconIndirectSpriteObjectList), nIndent);
  166.     break;
  167.   case (wimp_ICON_INDIRECTED | wimp_ICON_TEXT | wimp_ICON_SPRITE):
  168.     get_objects(hf, pszStringTable, NULL, (PSTR) icon_data, IconIndirectTextAndSpriteObjectList, ELEMENTS(IconIndirectTextAndSpriteObjectList), nIndent);
  169.     break;
  170.   }
  171. }
  172.  
  173.  
  174.         void _icon(PDATA data, PSTR pszIn, int nOffset, wimp_icon * icon)
  175. //      =================================================================
  176. {
  177. put_objects(data, pszIn, nOffset, (PSTR) icon, IconObjectList, ELEMENTS(IconObjectList));
  178. if (icon->flags & wimp_ICON_ANTI_ALIASED)
  179.     put_objects(data, pszIn, nOffset, (PSTR) icon, IconFontHandleObjectList, ELEMENTS(IconFontHandleObjectList));
  180.   else
  181.     put_objects(data, pszIn, nOffset, (PSTR) icon, IconColorsObjectList, ELEMENTS(IconColorsObjectList));
  182.  
  183. put_icon_data(data, pszIn, nOffset, (wimp_icon_data *) &icon->data, icon->flags);
  184. }
  185.  
  186.  
  187.         void icon(FILE * hf, PSTR pszStringTable, wimp_icon * icon)
  188. //      ===========================================================
  189. {
  190. get_objects(hf, pszStringTable, NULL, (PSTR) icon, IconObjectList, ELEMENTS(IconObjectList), 2);
  191. if (icon->flags & wimp_ICON_ANTI_ALIASED)
  192.     get_objects(hf, pszStringTable, NULL, (PSTR) icon, IconFontHandleObjectList, ELEMENTS(IconFontHandleObjectList), 2);
  193.   else
  194.     get_objects(hf, pszStringTable, NULL, (PSTR) icon, IconColorsObjectList, ELEMENTS(IconColorsObjectList), 2);
  195.  
  196. get_icon_data(hf, pszStringTable, (wimp_icon_data *) &icon->data, icon->flags, 2);
  197. }
  198.